package com.dk.assertion;

import com.alibaba.fastjson.JSONPath;
import com.dk.util.log.Log;

/**
 * 断言工具
 */
public class AssertUtil {
    /**
     * 比较两个字符串是否相同
     * @param strOne 字符串1
     * @param strTwo 字符串2
     * @return 结果
     */
    public static boolean assertEquals(String strOne,String strTwo){
        if(strOne.equals(strTwo)){
            return true;
        }
        Log.error("---【用例断言】:比较断言失败,"+strOne+"!="+strTwo+";");
        return false;
    }

    /**
     * 比较strOne是否包含strTwo
     * @param strOne 字符串1
     * @param strTwo 字符串2
     * @return 结果
     */
    public static boolean assertContain(String strOne,String strTwo){
        if(strOne.contains(strTwo)){
            return true;
        }
        Log.error("---【用例断言】:包含断言失败,"+strOne+"不包含"+strTwo+";");
        return false;
    }

    /**
     * 比较strOne是否包含strTwo
     * @param strOne 字符串1
     * @param strTwo 字符串2
     * @return 结果
     */
    public static boolean assertNoContain(String strOne,String strTwo){
        if(!strOne.contains(strTwo)){
            return true;
        }
        Log.error("---【用例断言】:不包含断言失败,"+strOne+"包含了"+strTwo+";");
        return false;
    }

    /**
     * jsonPath断言，从检查对象根据jsonpath提取值和目标值比较
     * @param checkObject 检查对象
     * @param jsonPath jsonpath 提取用jsonPath
     * @param targetResult 目标结果
     * @return
     */
    public static boolean assertJsonPath(Object checkObject,String jsonPath,String targetResult){
        String extractResult = JSONPath.eval(checkObject,jsonPath).toString();
        if (extractResult!=null){
            if(extractResult.equals(targetResult)){
                return true;
            }else{
                Log.error("---【用例断言】:jsonPath断言失败,检查对象:"+checkObject.toString()+"根据jsonPath:"+
                        jsonPath+"提取出来的结果:"+extractResult+"不等于目标结果:"+targetResult+";");
                return false;
            }
        }else{
            Log.error("---【error】:jsonPath断言异常,检查对象:"+checkObject.toString()+"根据jsonPath:"+jsonPath+"提取出来的结果为空,请检查数据");
            return false;
        }
    }

}
